The display of video information via computer is becoming increasingly common. Video data streams, i.e., a sequence of video pictures, include a large amount of digital data. For example, one second of the standard television studio video signal "CCIR 601" may include about twenty Mbytes of data which must be stored. A video signal is typically compressed prior to storage in order to conserve memory. A video signal typically is also encoded prior to transmission to conserve bandwidth. The stored or received video signal is later decompressed and decoded for display on the computer.
Several video compression algorithms have been developed in order to conserve memory and bandwidth. In particular, the video compression standards developed by the Moving Picture Expert Group (MPEG) have become nearly universal. The MPEG standards, known as MPEG-1 and MPEG-2, include a general algorithm to encode digital video and audio signals for consumer distribution. MPEG-1 is designed to be compatible with video signals, such as Source Input Format (SIF), which are stored on compact discs. MPEG-2 is designed to be compatible with broadcast video signals, such as the CCIR 601 standard.
Often, one picture within a video picture sequence is similar to a previous or subsequent picture. This phenomenon is called "temporal redundancy". The MPEG compression standards achieve high compression ratios with compression factors of about eight to thirty by taking advantage of this temporal redundancy, using a technique called "motion compensation". Motion compensation uses image information from previous (or future) pictures to construct the current picture. Some pictures may be significantly compressed by encoding them in terms of their differences from other pictures. A complete description of the MPEG-1 and MPEG-2 standards may be found in the ISO/IEC standard, Coded Representation of Picture, Audio and Multimedia/Hypermedia Information, ISO 11172, the entirety of which is hereby incorporated by reference.
In order to perform motion compensation, a video picture is broken into small sections, called "macroblocks". Each macroblock is compressed separately, producing a compressed signal containing two parts: a motion vector and error terms. The motion vector points to the location of a reference macroblock from another picture containing image information similar to the image information that will be used in the macroblock being encoded. The error terms represent the differences between the reference macroblock and the macroblock being encoded. When the compressed signal is decoded, the decoder reconstructs the original macroblock determining the location of the reference macroblock in a previously decoded reference picture using the motion vector, fetching the appropriate reference macroblock from memory and combining it with the error terms. Thus, to decode each macroblock, the decoder retrieves a portion of the previously decoded video picture stored in computer memory.
A common type of memory is dynamic random access memory (DRAM). When a word is read from a DRAM chip, the memory must have some way of determining whether each bit in the word is on or off. A DRAM chip needs to discharge the charge representing the value of the bit in order to read it. Thus, DRAM chips use a destructive read process. After each memory address is read, that address must be recharged to restore the previously stored bits. The time required to recharge the memory location is known as the precharge delay.
Memory is laid out in rows (also referred to as "pages") and columns. In a traditional memory chip, a memory location is accessed by identifying the proper row, waiting for a period called the "RAS/CAS delay", identifying the proper column, retrieving the data at the memory location identified by the row and the column, and waiting for the precharge delay so that the memory location is recharged. Then the procedure is repeated for the next memory location.
Because the motion vector can point to many locations within in the reference picture, and because a large number of reference macroblocks are fetched during the decompression, an MPEG decoder needs an efficient method of storing and retrieving random portions of an image stored in memory.